#ifndef CL_PLATFORMINFO_HPP
#define CL_PLATFORMINFO_HPP

#include <string>

namespace cl {

    class Platform;

    /** @brief The OpenCL PlatformInfo class. */
    class PlatformInfo {

    public:

        /** @brief PlatformInfo constructor.
         * @param platform of where the info will be retrieved. */
        explicit PlatformInfo(const Platform &platform);

        /** @brief getName
         * @return Platform name string. */
        const char *getName(void) const;

        /** @brief getVendor
         * @return Platform vendor string. */
        const char *getVendor(void) const;

        /** @brief getVersion returns the OpenCL version supported by the
         * implementation. This version string has the following format:
         * OpenCL<space><major_version.minor_version><space><platform-specific information>
         * @return OpenCL version string. */
        const char *getVersion(void) const;

        /** @brief getProfile returns the profile name supported by the
         * implementation. The profile name returned can be one of the following
         * strings:
         * FULL_PROFILE - if the implementation supports the OpenCL specification.
         * EMBEDDED_PROFILE - if the implementation supports the OpenCL embedded profile.
         * The embedded profile is defined to be a subset for each version of OpenCL.
         * @return OpenCL profile string. */
        const char *getProfile(void) const;

        /** @brief getExtensions returns a space-separated list of extension names (the
         * extension names themselves do not contain any spaces) supported by the platform.
         * Extensions defined here must be supported by all devices associated with this platform.
         * @return OpenCL extensions string. */
        const char *getExtensions(void) const;

    private:
        std::string vendor;
        std::string name;
        std::string version;
        std::string profile;
        std::string extensions;
    };
}

#endif // CL_PLATFORMINFO_HPP
